// 例子29

{
    let prop1 = 'foo';
    let prop2 = 'bar';

    let o = {
            [prop1]: 2,
            [prop2]: true,
            [prop1 + prop2]: {},
            ['say' + 'Hello']() {
                return 'Hello';
            },
            'new data': []
    }
    console.log(o[prop1]); // 2, 或o.foo
    console.log(o[prop2]); // true, 或o.bar
    console.log(o[prop1 + prop2]); // {}, 或o.foobar
    console.log(o['say' + 'Hello']()); // Hello，或o.sayHello()
    console.log(o['new data']); // []
}

console.log('----------------------------------');

{
    // 正确
    {
        const foo = 'bar';
        const baz = { [foo]: foo};
        console.log(baz); // {bar: "bar"}
    }

    // 错误
    {
        //const foo = 'bar';
        //const baz = { [foo] }; // Uncaught SyntaxError: Unexpected token }
        //console.log(baz);
        console.error('Uncaught SyntaxError: Unexpected token')
    }

}
